//package com.xiaocikuai.smallchunks.controller.Imgs;
//
//import org.springframework.web.bind.annotation.PostMapping; // 用于定义处理 POST 请求的映射
//import org.springframework.web.bind.annotation.RequestPart; // 用于处理请求中的文件部分
//import org.springframework.web.bind.annotation.RestController; // 定义控制器类为 REST 风格
//import org.springframework.web.multipart.MultipartFile; // 处理多部分文件上传
//import java.io.File; // 文件操作相关
//import java.io.IOException; // 异常处理相关
//import java.util.UUID; // 用于生成唯一标识符
////图片加载
//@RestController // 声明这是一个 REST 控制器
//public class ImageUploadController {
//    private static final String UPLOADED_FOLDER = System.getProperty("user.dir") + "/upload/"; // 定义上传文件的保存目录
//
//    //加载文件
//    @PostMapping("/upload") // 定义处理 "/upload" 路径的 POST 请求映射
//    public String uploadImage(@RequestPart("file") MultipartFile file) { // 处理上传文件的请求参数
//
//        try {
//            // 生成新的文件名
//            String fileName = UUID.randomUUID() + ".jpg"; // 生成一个随机的文件名，并添加 ".jpg" 后缀
//
//            // 保存文件到指定目录
//            saveFile(file, fileName); // 调用保存文件的方法
//
//            // 构建文件的 URL 地址，假设图片上传到 UPLOADED_FOLDER 目录下
//            return UPLOADED_FOLDER + fileName; // 返回文件的完整路径
//
//        } catch (IOException e) { // 捕获文件操作可能引发的 IOException 异常
//            e.printStackTrace(); // 打印异常信息到控制台
//            return "上传失败: " + e.getMessage(); // 返回上传失败的消息，包含异常信息
//        }
//    }
//
//    //保存文件
//    private void saveFile(MultipartFile file, String fileName) throws IOException { // 定义保存文件的方法
//        File uploadPath = new File(UPLOADED_FOLDER); // 创建上传文件的保存目录对象
//        if (!uploadPath.exists()) { // 如果目录不存在
//            boolean created = uploadPath.mkdirs(); // 创建目录
//            if (!created) { // 如果创建目录失败
//                throw new IOException("无法创建上传目录"); // 抛出异常，表示无法创建上传目录
//            }
//        }
//
//        File newFile = new File(uploadPath, fileName); // 创建保存文件的目标文件对象
//        file.transferTo(newFile); // 将上传的文件转移到目标文件
//    }
//}
package com.xiaocikuai.smallchunks.controller.Imgs;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

@Api(tags = "图片上传控制器")
@RestController
public class ImageUploadController {

    private static final String UPLOADED_FOLDER = System.getProperty("user.dir") + "/upload/";

    @ApiOperation(value = "上传图片")
    @PostMapping("/upload")
    public String uploadImage(
            @ApiParam(name = "file", value = "要上传的图片文件", required = true)
            @RequestPart("file") MultipartFile file) {

        try {
            String fileName = UUID.randomUUID() + ".jpg";
            saveFile(file, fileName);
            return UPLOADED_FOLDER + fileName;
        } catch (IOException e) {
            e.printStackTrace();
            return "上传失败: " + e.getMessage();
        }
    }

    @ApiOperation(value = "保存上传的文件")
    private void saveFile(
            @ApiParam(name = "file", value = "要保存的文件", required = true)
            MultipartFile file, String fileName) throws IOException {
        File uploadPath = new File(UPLOADED_FOLDER);
        if (!uploadPath.exists()) {
            boolean created = uploadPath.mkdirs();
            if (!created) {
                throw new IOException("无法创建上传目录");
            }
        }

        File newFile = new File(uploadPath, fileName);
        file.transferTo(newFile);
    }
}